﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Windows.Forms; // Se hace referencia a este dll para el manejo de campos de formulario
using ABC_SA_BL;
using ABC_SA_DM;



namespace ABC_SA_BLV
{
    public class Paquete_BLV
    {

        public string agregarPaquete(RadioButton activo, TextBox nombre, TextBox fechaInicio, TextBox fechaFinal, TextBox descripcion, TextBox precio, Label idPaquete)
        {
            //Inicializacion de variables
            int estadoInt = 1;
            string valorReturn = "";
            DateTime Test;

            try
            {
                if (nombre.Text != "" && fechaInicio.Text != "" && fechaFinal.Text != "" && descripcion.Text != "")
                {
                    if (DateTime.TryParseExact(fechaInicio.Text, "dd/MM/yyyy", null, DateTimeStyles.None, out Test) == true && DateTime.TryParseExact(fechaFinal.Text, "dd/MM/yyyy", null, DateTimeStyles.None, out Test) == true)
                    {
                        //Captura y convierte a INT el valor del precio
                        int intPrecio = Convert.ToInt32(precio.Text);

                        //Se pasa de un estado String a un estadoInt int
                        if (activo.Checked)
                            estadoInt = 1;
                        else
                            estadoInt = 0;

                        //Se crea el paquete en la capa BL
                        Paquete_BL Paquete_BL = new Paquete_BL();
                        Paquete_BL.crearPaquete(estadoInt, nombre.Text, fechaInicio.Text, fechaFinal.Text, descripcion.Text, intPrecio);
                        valorReturn = "Se ha agregado el paquete nuevo a la BD correctamente.";
                        limpiarCampos(activo, nombre, fechaInicio, fechaFinal, descripcion, precio, idPaquete);
                    }
                    else
                    {
                        valorReturn = "Por favor ingresar las fechas con el formato solicitado";
                    }
                }
                else
                {
                    valorReturn = "Por favor no dejar campos en blanco.";
                }
            }
            catch
            {
                return "Por favor ingresar solo números al campo de 'Precio'.";
            }
            return valorReturn;
        }

        public string modificarPaquete(RadioButton activo, TextBox nombre, TextBox fechaInicio, TextBox fechaFinal, TextBox descripcion, TextBox precio, Label idPaquete)
        {
            //Inicializacion de variables
            int estadoInt = 1;
            string valorReturn = "";
            DateTime Test;

            try
            {
                if (nombre.Text != "" && fechaInicio.Text != "" && fechaFinal.Text != "" && descripcion.Text != "")
                {
                    if (DateTime.TryParseExact(fechaInicio.Text, "dd/MM/yyyy", null, DateTimeStyles.None, out Test) == true && DateTime.TryParseExact(fechaFinal.Text, "dd/MM/yyyy", null, DateTimeStyles.None, out Test) == true)
                    {
                        //Captura y convierte a INT el valor del precio y idPaquete
                        int intPrecio = Convert.ToInt32(precio.Text);
                        int intPaquete = Convert.ToInt32(idPaquete.Text);

                        ////Se pasa de un estado String a un estadoInt int
                        if (activo.Checked)
                            estadoInt = 1;
                        else
                            estadoInt = 0;

                        ////Se crea el paquete en la capa BL
                        Paquete_BL Paquete_BL = new Paquete_BL();
                        Paquete_BL.modificarPaquete(estadoInt, nombre.Text, fechaInicio.Text, fechaFinal.Text, descripcion.Text, intPrecio, intPaquete);
                        //Paquete_BL.modificarPaquete(estadoInt, nombre.Text, fechaInicio.Text, fechaFinal.Text, descripcion.Text, intPrecio, intPaquete);
                        valorReturn = "Se ha modificado el paquete en la BD correctamente.";
                        limpiarCampos(activo, nombre, fechaInicio, fechaFinal, descripcion, precio, idPaquete);
                    }
                    else
                    {
                        valorReturn = "Por favor ingresar las fechas con el formato solicitado";
                    }
                }
                else
                {
                    valorReturn = "Por favor no dejar campos en blanco.";
                }
            }
            catch
            {
                return "Por favor ingresar solo números al campo de 'Precio'.";
            }
            return valorReturn;
        }


        public string eliminarPaquete(RadioButton activo, TextBox nombre, TextBox fechaInicio, TextBox fechaFinal, TextBox descripcion, TextBox precio, Label idPaquete)
        {
            //Inicializacion de variables
            string valorReturn = "";

            try
            {
                //Captura y convierte a INT el valor del ID
                int intPaquete = Convert.ToInt32(idPaquete.Text);

                //Se envía el idPaquete a la capa BL
                Paquete_BL Paquete_BL = new Paquete_BL();
                Paquete_BL.eliminarPaquete(intPaquete);

                valorReturn = "Se ha eliminado el paquete de la BD correctamente.";
                limpiarCampos(activo, nombre, fechaInicio, fechaFinal, descripcion, precio, idPaquete);

            }catch {
                valorReturn = "Debe de mostrar un paquete existente consultandolo de la lista de la derecha.";
            }
            return valorReturn;
        }

        public void mostrarPaquete(RadioButton activo, RadioButton inactivo, TextBox nombre, TextBox fechaInicio, TextBox fechaFinal, TextBox descripcion, TextBox precio, Label idPaquete, int intPaquete)
        {
            //Se envía el idPaquete a la capa BL
            Paquete_BL Paquete_BL = new Paquete_BL();
            Paquete paqueteAMostrar = Paquete_BL.mostrarPaquete(intPaquete);

            //Llena los campos del formulario con la informacion del paquete consultado
            nombre.Text = paqueteAMostrar.nombreSG;
            fechaInicio.Text = paqueteAMostrar.fechaInicioSG;
            fechaFinal.Text = paqueteAMostrar.fechaFinalSG;
            descripcion.Text = paqueteAMostrar.descripcionSG;
            idPaquete.Text = paqueteAMostrar.idSG+"";
            precio.Text = paqueteAMostrar.precioSG +"";

            if (paqueteAMostrar.estadoSG == 1)
                activo.Checked = true;
            else
                inactivo.Checked = true;

        }

        public void limpiarCampos(RadioButton Activo, TextBox Nombre, TextBox fechaInicio, TextBox fechaFinal, TextBox descripcion, TextBox precio, Label idPaquete) {
            Activo.Checked = true;
            Nombre.Text = "";
            fechaInicio.Text = "";
            fechaFinal.Text = "";
            descripcion.Text = "";
            precio.Text = "";
            idPaquete.Text = "Asignación Automática";
        }

        public void consultaListaPaquetes(DataGridView dataGrid) {
            //Solicita la lista de paquetes a la capa BL
            Paquete_BL Paquete_BL = new Paquete_BL();
            List<Paquete> listaP = new List<Paquete>();
            
            //listaP contiene la lista de paquetes
            listaP = Paquete_BL.consultaListaPaquetesInfo();
            //Se recorre la lista para ingresar los registros al DataGrid
            for (int i = 0; i < listaP.Count(); i++)
            {
                string estado;
                int estadoINT = listaP.ElementAt(i).estadoSG;

                if (estadoINT == 1)
                    estado = "Activo";
                else 
                    estado = "Inactivo";
                // Crea el String que se agregara al Datagrid, y luego lo agrega
                string[] newRow = { listaP.ElementAt(i).nombreSG, estado, listaP.ElementAt(i).idSG+"" };
                dataGrid.Rows.Add(newRow);

            }
        }
    }
}
